
package module.bank;

import common.model.Entity.bankEntity.Transaction;
import network.protocol.Response;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Optional;

/**
 * 交易服务接口
 * 提供交易记录查询和创建的相关服务
 */
public interface BankTransactionService {

    /**
     * 获取账户交易记录（支持按类型筛选）
     * @param accountId 账户ID
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @param transactionType 交易类型
     * @return 包含交易记录的响应
     */
    Response<List<Transaction>> getTransactions(Long accountId, LocalDateTime startTime,
                                                LocalDateTime endTime, Integer transactionType);

    /**
     * 获取账户的所有交易记录（不按类型筛选）
     * @param accountId 账户ID
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @return 包含交易记录的响应
     */
    Response<List<Transaction>> getAccountTransactions(Long accountId, LocalDateTime startTime,
                                                       LocalDateTime endTime);


    /**
     * 创建交易记录
     * @param transaction 交易对象
     * @return 包含操作结果的响应
     */
    Response<Boolean> createTransaction(Transaction transaction);

}
